import Axios from 'axios';
import { AlertModule } from 'vux'
import Store from '../store';
import { getToken } from '@/utils/auth';
import Config from '../config';

// 创建axios实例
const service = Axios.create({
  baseURL: Config.baseurl, // api的base_url
  timeout: 60000 // 请求超时时间
});

// request拦截器
service.interceptors.request.use(config => {
  if (Store.getters.token) {
    config.headers['Authorization'] = 'Bearer ' + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  return config;
},
  error => {
    // Do something with request error
    console.log(error); // for debug
    Promise.reject(error);
  });

// respone拦截器
service.interceptors.response.use(
  response => {
    const res = response;
    if (res.status !== 200) {
      AlertModule.show({
        content: res.error.message,
      });
      // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
      //if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
      //    MessageBox.confirm('你已被登出，可以取消继续留在该页面，或者重新登录',
      //        '确定登出',
      //        {
      //            confirmButtonText: '重新登录',
      //            cancelButtonText: '取消',
      //            type: 'warning'
      //        })
      //        .then(() => {
      //            store.dispatch('FedLogOut')
      //                .then(() => {
      //                    location.reload(); // 为了重新实例化vue-router对象 避免bug
      //                });
      //        });
      //}
      return Promise.reject('error');
    } else {
      return response.data;
    }
  },
  error => {
    console.log('err' + error); // for debug
    if (error.message.includes('timeout')) {
      AlertModule.show({
        content: '网络超时',
      });
    } else {
      AlertModule.show({
        content: error.message,
      });
    }

    return Promise.reject(error);
  }
);

export default service;
